package cn.tedu.spring.eg2;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;

/**
 * 控制器类 用于实现通过接口方式注入Mapper对象
 */
@Component
public class CommentMapper {
    @Autowired
    @Qualifier(value = "mapperImpl1")
    private Mapper mapper;
}
/**
    在Spring框架中，@Autowired 和 @Qualifier 注解可以一起使用，以提供更细粒度的依赖注入控制。

    @Autowired 注解是Spring自动装配机制的一部分，它允许Spring自动查找并注入与类型匹配的Bean到字段或方法参数中。
            然而，当有多个相同类型的Bean存在于Spring容器中时，Spring无法确定应该注入哪一个，这时就需要 @Qualifier 注解来指定确切的Bean。

    @Qualifier 的作用是：
            当有多个相同类型的Bean时，通过它的value属性指定一个唯一的Bean名称，确保Spring知道要注入哪个特定的Bean。
            它可以与 @Autowired 一起使用，告诉Spring在自动装配时要使用具有特定名称的Bean。
            如果没有 @Qualifier，Spring会基于类型或者通过其他自动装配策略（如按类型优先级、按名称等）来决定注入哪个Bean。
    例如，在给出的代码中：

             @Component
             public class CommentMapper {
             @Autowired
             @Qualifier(value = "MapperImpl1")
             private Mapper mapper;
             }
    这里，CommentMapper 类有一个 Mapper 类型的字段，Spring会尝试自动注入一个 Mapper 类型的Bean。
             由于可能存在多个 Mapper 实现，@Qualifier("MapperImpl1") 被用来明确指出要注入的特定Bean的名称是 MapperImpl1。
             这样，即使有多个 Mapper 实现，Spring也会找到名为 MapperImpl1 的那个Bean进行注入。
    总结来说，@Autowired 和 @Qualifier 结合使用是为了在多个候选Bean中指定一个特定的Bean进行注入，以解决类型匹配不唯一的问题。

 */
